In computer systems, firmware such as device drivers or other dedicated application programs are stored in erasable programmable read only memories (EPROM). EPROM are desirable for this task because they are nonvolatile (i.e., retain data stored to it when powered off) and they allow the stored firmware to be altered and/or upgraded as desired. However, any erasure of existing firmware and programming of new firmware can only be done with the EPROM removed from the board socket using special equipment.
Flash memory (i.e., solid state memory) is a new technology that is gaining support to replace EPROM because like EPROM, flash memory is nonvolatile. On the other hand, unlike EPROM, flash memory allows for in-system update ability under system processor control. Another difference between flash memory and other rewriteable memory technologies is that for flash memory, programming may only involve changing binary ones (1) to zeros (0) while erasing may only involve changing zeros back to ones which is the default binary value of memory cells in flash memory. As such, writing a firmware into a flash memory may require both an erasing and a programming operation. Discussion on flash memory technology can be found, for example, in Brian Dipert and Markus Levy, "Designing with Flash Memory" (2d ed. 1994) which is herein incorporated by reference as background material.
FIG. 1 illustrates a block diagram of Prior Art computer system 100 which allows firmware to be erased and reprogrammed under system processor control. As an example, the firmware may be a device driver needed to operate a peripheral device attached to computer system 100. The firmware can also be a diagnostic program needed to determine the existence of errors in the operation of computer system 100 and locate the source of these errors. Furthermore, the firmware can provide configuration parameters needed for the operation of computer system 100.
Computer system 100 consists of CPU 101, memory 102, flash memory 103, and floppy drive 104 which are all coupled to bus 105. With respect to erase operations, a program is retrieved from a floppy disk by floppy drive 104 and sent to memory 102 for storage. CPU 101 then executes the instructions codes stored in memory 102 to supply the desired voltage potentials across memory cells in flash memory 103 to carry out an erase operation. Similarly, in programming operations, a program is retrieved from a floppy disk by floppy drive 104 and sent to memory 102 for storage. CPU 101 then executes the instruction codes of the program stored in memory 102 to supply the desired voltage potentials across selective memory cells in flash memory 103 to program the firmware into flash memory 103.
Under the Prior Art, to program flash memory 103, a copy of the program must be available on site for the firmware to be programmed into flash memory 103. At best, a delay associated with shipping the program to the field may cause some inconveniences. At worst, such as the case involving a diagnostic program, a delay may halt usage of computer system 100 until the system error(s) can be detected and corrected.
Thus, a need exists for an arrangement, system, and method to allow firmware to be dynamically written into a programmable memory from a remote location.